/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ru.icq.listener;

import java.util.ArrayList;
import org.apache.log4j.Logger;
import ru.icq.io.connections.ConnectionsCustom;

/**
 *
 * @author Носов А.В.
 */
public class AccountEvent {

    // Variables declaration
    private static final Logger log = Logger.getLogger(AccountEvent.class);
    
    private ArrayList<IAccountListener> listeners = new ArrayList<IAccountListener>();
    // End of variables declaration

    /**
     * Добавить слушателя.
     * @param listener слушатель
     */
    public void addMyListener(IAccountListener listener) {
        listeners.add(listener);
    }

    /**
     * Возвращает всех слушателей.
     * @return слушатели
     */
    public IAccountListener[] getMyListeners() {
        return listeners.toArray(new IAccountListener[listeners.size()]);
    }

    /**
     * Удаляет слушателя.
     * @param listener слушатель
     */
    public void removeMyListener(IAccountListener listener) {
        listeners.remove(listener);
    }

    protected void fireChangePresence(ConnectionsCustom connection) {
        for(IAccountListener listener : listeners)
            listener.changePresence(connection);
    }

    protected void fireProcessChatMessage(String from, String msg) {
        for(IAccountListener listener : listeners)
            listener.processChatMessage(from, msg);
    }

    /**
     * Смена статуса соединения.
     * @param connection соединение
     */
    public void changePresence(ConnectionsCustom connection) {
        fireChangePresence(connection);
    }

    /**
     * Сообщение чата.
     * @param from от кого
     * @param msg сообщение
     */
    public void processChatMessage(String from, String msg) {
        fireProcessChatMessage(from, msg);
    }
}
